#include <iostream>

using namespace std;

#define MAX 1024

const int VALUE_1 = 100;
const short VALUE_2 = 200;

// const 和 #define 的区别
// 1.const 有类型, 可进行编译器类型的安全检查; #define 无类型, 不可以进行类型检查
// 2.const 有作用域, 而 #define 不重视作用域

void function(short value) {
    cout << "function(int short)" << endl;
}

void function(int value) {
    cout << "function(int value)" << endl;
}

void test01() {
    // #define 没有类型检查
    function(MAX);
    // const 存在类型检查
    function(VALUE_1);
    function(VALUE_2);

    cout << endl;
}

#define VALUE_3 100

void function() {
    const int VALUE_4 = 200;

    cout << "VALUE_3 = " << VALUE_3 << endl;
}

void test02() {
    cout << "VALUE_3 = " << VALUE_3 << endl; // 可以获取到变量
    // cout << "VALUE_4 = " << VALUE_4 << endl; // 不能获取到变量

    // const 有作用域, 而 #define 不重视作用域

    cout << endl;
}

int main() {
    test01();

    test02();
}